package com.yeban.javase.day08.test02;

import java.util.Calendar;

public interface IDao<T, K> {

    /**
     * 添加新的账号信息，账号数组扩容
     */
    public boolean insert(T t);

    /**
     * 根据账户id和密码pwd，查看账户信息
     * 登录验证 / 取钱
     */
    public T selectOne(Long id, String pwd);

    /**
     * 根据账户id，查看账户信息
     * 存钱
     */
    public T selectOne(Long id);

    /**
     * 查询所有账户，统计用的
     * 泛型 任意的大写字母
     * T 代表容器中元素的类型，例如：Account
     * K 代表容器的类型，例如：Account[]、List<Account>
     */
    public K selectAll();

    // 获取ID
    public Long getId();

    // 设置ID
    public void setId(Long id);

    // 生成账户ID
    public default Long createID() {

        // 1、获得初始ID值
        String idStr = getId().toString();
        // 2、ID值 86215021 2013 02 0001
        Integer year = Integer.parseInt(idStr.substring(0, 12));
        Integer month = Integer.parseInt(idStr.substring(12, 14));
        String count = idStr.substring(14);
        // 3、获取当前年月
        Calendar c = Calendar.getInstance();
        int nowYear = c.get(Calendar.YEAR);
        int nowMonth = c.get(Calendar.MONTH) + 1;
        if(year!=nowYear || month!=nowMonth) {
            year = nowYear;
            month = nowMonth;
            count = "0001";
        }

        // 4、判断是否达到9999 提示次月再来
        if (count.equals("10000")) {
            count = "0001";
            System.out.println("本月已满，下月再来");
            return -1L;
        }

        // 5、组装 862150212025100001
        String str = "";
        if(month<10) {
            str = "86215021"+year+"0"+month+count;
        }else{
            str = "86215021"+year+month+count;
        }

        // 6、累加计数并返回
        Long id = Long.valueOf(idStr);
        setId(id);
        return id;
    }



//     * 根据id和密码进行销户
//     */
//    public void delete(Long id, String pwd);
//
//    /**
//     * 修改指定账户的信息
//     */
//    public Account upDate(Account acc);
}
